نکته:
ممکن هست محتوای این صفحه بروز نباشد ولی دانلود دوره آخرین آپدیت می باشد.
نمونه ویدیوها:
توضیحات دوره:
این بوتکمپ به بررسی توسعه مدرن بکاند با .NET 8 میپردازد و با تحلیل چالشهای مونو لیتهای سنتی، شما را در مسیر پیادهسازی معماریهای مونو لیت ماژولار (Modular Monolith) هدایت میکند. بیاموزید که چگونه پروژهها را ساختاردهی کنید، وابستگیها را مدیریت نمایید و دادهها را با استفاده از ابزارهای پیشرفتهای مانند PostgreSQL و EF Core به طور مؤثر ایزوله کنید.
شما مفاهیم طراحی دامین-محور (DDD)، CQRS و معماری برش عمودی (VSA) را برای ساخت ماژولهای قابل نگهداری مانند کاتالوگ، سبد خرید و سفارشات بررسی خواهید کرد. این دوره همچنین ارتباطات ناهمگام (Async) با RabbitMQ را پوشش میدهد تا گردش کارهای رویداد-محور مطمئن با استفاده از الگوی Outbox تضمین شود. توسعه عملی در این دوره، دانش کاربردی در مورد طراحی سیستمهای واقعی را تضمین میکند.
در زمینه امنیت، بر یکپارچهسازی Keycloak برای مدیریت هویت متمرکز تأکید شده و برای افزایش عملکرد از کشینگ Redis استفاده میشود. در نهایت، یاد میگیرید که چگونه برنامهها را با استفاده از الگوی Strangler Fig از یک مونو لیت ماژولار به میکروسرویسها منتقل کنید. در پایان، شما آماده خواهید بود تا سیستمهای بکاند مقیاسپذیر را با .NET 8 طراحی، توسعه و مستقر کنید.
- طراحی معماریهای مقیاسپذیر Modular Monolith
- پیادهسازی مؤثر DDD، CQRS و VSA
- ساخت APIهای امن با Keycloak و OpenID
- بهینهسازی جریان دادهها با EF Core و PostgreSQL
- استفاده از RabbitMQ برای ارتباطات ناهمگام مطمئن
- انتقال بدون درز مونو لیتها به میکروسرویسها
این دوره برای توسعهدهندگان بکاند و معماران نرمافزاری طراحی شده است که به دنبال ارتقای مهارتهای خود در توسعه مدرن .NET 8 هستند. این دوره برای متخصصانی که در C#، .NET و مفاهیم پایه پایگاه داده تجربه دارند ایدهآل است و دانش پیشرفتهای از معماریهای مقیاسپذیر ارائه میدهد. چه هدف شما بهینهسازی سیستمهای موجود باشد و چه انتقال به میکروسرویسها، این دوره ابزارها و بینشهای لازم برای طراحی برنامههای بکاند مستحکم و قابل نگهداری را فراهم میکند.
سرفصل ها و درس ها
مقدمه
Introduction
مقدمه
Introduction
پیشنیازها، سورس کد و اسلایدهای دوره
Prerequisites, Source Code and Course Slides
اجرای برنامه نهایی
Run the Final Application
ساختار کد پروژه
Project Code Structure
معماریها، الگوها، کتابخانهها و بهترین روشهای مونو لیت ماژولار
Modular Monoliths Architectures, Patterns, Libraries and Best Practices
نحوه دنبال کردن دوره (جریان دوره و روش یادگیری)
How to Follow the Course (The Course Flow and Way of Learning)
معماری مونو لیتیک: مشکل مونو لیتهای سنتی چیست؟
Monolithic Architecture - What's wrong with Traditional Monoliths?
مونو لیتهای سنتی چیستند (معماری مونو لیتیک)؟
What is Traditional Monoliths (Monolithic Architecture)?
مشکل معماری مونو لیتیک سنتی چیست؟
What's wrong with Traditional Monolithic Architecture?
قفل تکنولوژی و چرخه ترس در معماری مونو لیتیک سنتی
Technology Lock-In and Fear Cycle in Traditional Monolithic Architecture
مفهوم Big Ball of Mud (گلوله بزرگ گل و لای)
Big Ball of Mud
معماریهای میکروسرویس: چرا برای همه پروژهها مناسب نیست؟
Microservices Architectures - Why it is not fit for all projects?
میکروسرویسها و معماری میکروسرویس چیستند؟
What are Microservices and Microservices Architecture?
مشکلات معماری میکروسرویس چیست؟
What's wrong with Microservices Architecture?
آنتی-پترن میکروسرویس: مونو لیت توزیع شده
Microservices Antipattern: The Distributed Monolith
مورد آمازون: بازطراحی از میکروسرویسهای توزیع شده به مونو لیت
Amazon Case: Rearchitecting from a Distributed Microservices to a Monolith
پل ارتباطی: معماریهای مونو لیت ماژولار (درگاه بین مونو لیت و میکروسرویس)
The Bridge: Modular Monolith Architectures - Gateway between Monolithic and MS
معماری مونو لیت ماژولار (Modulith) چیست؟
What is Modular Monolithic (Modulith) Architecture?
چرا مونو لیت ماژولار؟ مزایا نسبت به میکروسرویسها
Why Modular Monoliths? Advantages over Microservices?
رویکردهای «اول مونو لیت» از مارتین فاولر و سام نیومن
Monolith First Approaches from Martin Fowler and Sam Newman
نقطه شروع برای میکروسرویسها: انتقال تدریجی با بازسازی افزایشی
Starting Point for Microservices: Gradually Transition with Incremental Refactor
مقایسه معماری برش عمودی در مقابل معماری پاک
Vertical Slice versus Clean Architecture
ایجاد پروژههای ماژول به عنوان Class Library
Create Module Projects as a Class Library
الگوی Shared Kernel در DDD
Shared Kernel Pattern in DDD
ایجاد پروژه Shared Kernel Class Library برای تمام ماژولها
Create Shared Kernel Class Library Project for All Modules
افزودن وابستگیهای پروژه Shared به پروژههای ماژولها
Shared Project Dependencies to Modules Projects
وابستگیهای ماژولها به پروژه Bootstrapper Asp.Net Api
Module Dependencies to Bootstrapper Asp.Net Api Project
اتصال وابستگیها بین ماژولها (مدیریت DI ماژولها)
Wire-up Dependencies Between Modules (DI Management of Modules)
مقدمه: اتصال وابستگیها بین ماژولها (مدیریت DI ماژولها)
Introduction - Wire-up Dependencies Between Modules (DI Management of Modules)
مدیریت تزریق وابستگی Asp.net و فایل Program.cs
Asp.net Dependency Injection Management and Program.cs
اتصال وابستگیها بین ماژولها
Wiring up dependencies between modules
توسعه متد extension برای AddCatalogModule در CatalogModule.cs
Develop AddCatalogModule extension method in CatalogModule.cs
ثبت وابستگیهای کاتالوگ در Program.cs
Registering Catalog Dependencies into Program.cs
توسعه متدهای extension برای AddBasketModule و AddOrderingModule
Develop AddBasketModule, AddOrderingModule extension methods
ثبت وابستگیهای سبد خرید و سفارشات در Program.cs
Registering Basket and Ordering Dependencies into Program.cs
میانافزارهای (Middlewares) Asp.net و خط لوله درخواستهای HTTP
Asp.net Middlewares and HTTP Request Pipeline
پیکربندی خط لوله درخواستهای HTTP برای ماژولها در Program.cs
Configure HTTP Request Pipelines for Modules in Program.cs
بررسی کلاس WebApplication، استفاده از Abstractions و نصب پکیجهای مورد نیاز
Examine WebApplication Class Use Abstractions and Install Required Packages
توسعه متد extension برای UseCatalogModule جهت پیکربندی درخواست HTTP ماژول
Develop UseCatalogModule extension method for Module Configure the HTTP request
یکپارچهسازی UseCatalogModule در Program.cs
Integrating UseCatalogModule in Program.cs
توسعه متدهای extension برای UseBasketModule و UseOrderingModule
Develop UseBasketModule and UseOrderingModule extension method for Module Config
یکپارچهسازی متدهای UseBasketModule و UseOrderingModule در Program.cs
Integrating UseBasketModule and UseOrderingModule extension method in Program.cs
افزودن GlobalUsings.cs به هر پروژه برای جلوگیری از تکرار دستورات using
Add GlobalUsings.cs for Each Project to Avoid Redundant Using Statements
اولین ماژول: ماژول کاتالوگ با معماری برش عمودی و CQRS
First Module: Catalog Module with Vertical Slice Architecture and CQRS
مقدمه: اولین ماژول - ماژول کاتالوگ با معماری برش عمودی
Introduction - First Module: Catalog Module with Vertical Slice Architecture
تحلیل دامین ماژول کاتالوگ: مدلها، Use Caseها، APIهای REST و دیتابیسها
Domain Analysis of Catalog Module: Models, UCs, Rest APIs, Databases
تحلیل فنی ماژول کاتالوگ: معماریها، الگوها، کتابخانهها و پوشهها
Technical Analysis of Catalog Module: Architectures, Patterns, Libraries, Folder
مسیر توسعه: Shared > Modules > API
Way of Development: Shared -> Modules -> API
توسعه دامین مشترک برای انتزاع تاکتیکی DDD (Entity, Aggregate, Events)
Develop Shared Domain for Tactical DDD Abstraction (Entity, Aggregate, Events)
مقدمه: توسعه دامین مشترک برای انتزاع تاکتیکی DDD
Introduction - Develop Shared Domain for Tactical DDD Abstraction
طراحی دامین-محور (DDD)
Domain Driven Design - DDD
DDD تاکتیکی: موجودیتها (Entities)، اشیاء مقدار (Value Objects)، Aggregateها و Aggregate Roots
Tactical Domain-Driven Design: Entities, Value Objects, Aggregates, A. Roots
توسعه انتزاعهای DDD (Entity, Aggregate, DomainEvent) در کتابخانه Shared
Develop DDD Abstractions (Entity, Aggregate, DomainEvent) in Shared Library
توسعه اینترفیس IDomainEvent در انتزاع تاکتیکی DDD با استفاده از MediatR
Develop IDomainEvent interface in Tactical DDD Abstraction using MediatR
توسعه کلاسهای Aggregate در انتزاع تاکتیکی DDD
Develop Aggregate classes in Tactical DDD Abstraction
توسعه دامین کاتالوگ با مدلهای موجودیت دامین محصول
Develop Catalog Domain with Product Domain Entity Models
مقدمه: توسعه دامین کاتالوگ با مدلهای موجودیت دامین محصول
Introduction - Develop Catalog Domain with Product Domain Entity Models
توسعه مدلهای موجودیت دامین محصول در مدلهای دامین ماژول کاتالوگ
Develop Product Domain Entity Models in Catalog Module Domain Models
مدلهای دامین کمخون (Anemic) در مقابل مدلهای دامین غنی (Rich) در DDD
Anemic-domain vs Rich-domain Model Entities in DDD
توسعه مدل موجودیت دامین غنی DDD برای موجودیت محصول
Develop DDD Rich-domain model Entity for Product Entity
رویدادهای دامین در DDD و تفاوت رویدادهای دامین با رویدادهای یکپارچهساز (Integration Events)
Domain Events in DDD and Domain vs Integration Events
توسعه رویدادهای دامین Product Created و Updated در ماژول کاتالوگ
Develop Product Created and Updated Domain Event in Catalog Module
ایجاد رویدادهای دامین ProductCreated و ProductPriceChanged در ماژول کاتالوگ
Raise ProductCreated and ProductPriceChanged Domain Event in Catalog Module
مدیریت دادههای مونو لیت ماژولار: راهاندازی Postgres به عنوان دیتابیس اصلی
Data Management of Modular Monolith: Setup Postgres as a Main Database
مقدمه: مدیریت دادههای مونو لیت ماژولار - راهاندازی دیتابیس Postgres
Introduction - Data Management of Modular Monolith: Setup Postgres DB
مدیریت دادهها در مونو لیتهای ماژولار: ۴ استراتژی ایزولهسازی دادهها
Data Management of Modular Monoliths: 4 Data Isolation Strategies
بهترین روش: جداسازی Schema دیتابیس برای ماژولها در برنامههای مونو لیت ماژولار
Best Practice: DB Schema separation of Modules in Modular Monoliths apps
استفاده از Multi-context EF DB Context برای جداسازی Schema جهت ایزولهسازی دادهها
Multi-context EF DB Context object for DB Separate Schema for Data Isolation
سرویسهای پشتیبان (Backing Services) برای معماریهای Cloud Native
Backing Services for Cloud-Native Architectures
راهاندازی دیتابیس PostgreSQL با استفاده از فایل Docker Compose برای محیط چند-کانتینری
Setup PostgreSQL DB using Docker-compose file for Multi-container Docker env
افزودن ایمیج PostgreSQL به فایل Docker Compose
Add PostgreSQL DB image into Docker-compose file for Multi-container Docker env
اجرای Docker Compose در ویژوال استودیو برای راهاندازی PostgreSQL در داکر
Run Docker-Compose on Visual Studio to setup PostgreSQL DB on Docker
اتصال و بررسی دیتابیس PostgreSQL با استفاده از pgAdmin
Connect and Browse PostgreSQL DB using pgAdmin
توسعه زیرساخت دادههای مشترک و کاتالوگ با EF Core Code First
Develop Shared and Catalog Data-Infrastructure with EF Core Code First
مقدمه: توسعه لایه زیرساخت دادههای مشترک و کاتالوگ با EF Core
Introduction - Develop Shared and Catalog Data-Infrastructure Layer with EF Core
ویژگیهای EF Core 8، رویکرد Code First، میگریشنها و اتصال به PostgreSQL
EF Core 8 Features, Code First Approach, Migrations and PostgreSQL Connection
مراحل توسعه EF Core برای زیرساخت دادههای مشترک و کاتالوگ
Steps of EF Core Developments for Shared and Catalog Data-Infrastructure
نصب پکیجهای NuGet مربوط به EF Core در کتابخانه Shared
Install EF Core NuGet Packages in Shared Library
توسعه شیء DbContext در EF Core برای ذخیره موجودیتها در ماژول کاتالوگ
Develop EF Core DbContext Object for Storing Entities in Catalog Module
نگاشت اشیاء DDD به موجودیتهای EF و توسعه پیکربندیهای موجودیت EF Core
Mapping DDD Objects to EF Entities - Develop EF Core Entity Configurations
رشته اتصال (Connection String) PostgreSQL در فایل appsettings.json
EF Core PostgreSQL Connection String in appsettings.json file
ثبت DbContext در ابزار DependencyInjection برای PostgreSQL در Asp.Net
Register EF Core DbContext in Asp.Net DependencyInjection Tool for PostgreSQL
ایجاد میگریشنهای EF Core برای CatalogDbContext - بخش اول
Create EF Core Migrations for CatalogDbContext - Part 1
ایجاد میگریشنهای EF Core برای CatalogDbContext - بخش دوم
Create EF Core Migrations for CatalogDbContext - Part 2
بررسی و اجرای Docker Compose در ویژوال استودیو برای راهاندازی PostgreSQL
Review and Run Docker-Compose on Visual Studio to setup PostgreSQL DB on Docker
اعمال میگریشنهای EF Core بر روی دیتابیس PostgreSQL با دستور Update Database
Apply EF Core Migrations to PostgreSQL DB with Update-Database Command
میگریشن خودکار موجودیتهای EF Core هنگام شروع برنامه
Auto Migrate EF Core Entities to PostgreSQL DB when Application Startup
توسعه متد Extension عمومی UseMigration برای میگریشن و Seed دیتابیس
Develop Generic UseMigration Extension Method for DB Migration and Seed
استفاده از متد UseMigration در کلاسهای DependencyInjection ماژولها
Using UseMigration Extension Method on Module DependencyInjection Classes
تست میگریشنهای خودکار با متد UseMigration در WebApplication
Test Auto-Migrations with UseMigration Extension Method on WebApplication
تزریق دادههای اولیه (Seed) محصولات EShopDb هنگام شروع برنامه بعد از UseMigration
Seed EShopDb Product Data When Application Startup Just After UseMigration
اجرای ماژول کاتالوگ برای میگریشن و Seed دیتابیس با متد UseMigration
Run Catalog Module to Migrate and Seed EShopDb with UseMigration Method
اینترسپتورهای EF Core: استفاده از SaveChangesInterceptor برای حسابرسی (Auditing) موجودیتها
EF Core Interceptors: SaveChangesInterceptor for Auditing Entities
توسعه SaveChangesInterceptor برای حسابرسی موجودیتهای سفارشات
Develop SaveChangesInterceptor to Auditing Entities for Order Entities
اجرا و تست ماژول کاتالوگ برای حسابرسی با EF Save Changes Interceptor
Run & Test Catalog Module for Audit with EF Save Changes Interceptor
ارسال رویدادهای دامین با EF Core SaveChangesInterceptor
Dispatch Domain Events with EF Core SaveChangesInterceptor
توسعه DispatchDomainEventsInterceptor برای فعالسازی هندلرهای رویداد دامین
Develop DispatchDomainEventsInterceptor to Trigger Domain Event Handlers
اجرا و تست ماژول کاتالوگ برای ارسال رویدادهای دامین با EF SaveChanges Interceptor
Run & Test Catalog Module for Dispatch DomainEvents with EF SaveChanges Interceptor
توسعه Use Caseهای برنامه با CQRS و MediatR
Application Use Case Development with CQRS and MediatR
مقدمه: توسعه Use Caseهای برنامه با CQRS و MediatR
Introduction - Application Use Case Development with CQRS and MediatR
پیادهسازی منطقی و فیزیکی الگوی CQRS
Logical and Physical Implementation of CQRS Pattern
الگوی طراحی CQRS با کتابخانه MediatR (پیادهسازی منطقی CQRS)
CQRS Design Pattern With MediatR Library (Logical CQRS Implementation)
توسعه کلاس Feature Handler با CQRS و MediatR
Develop Feature Handler Class with CQRS and MediatR
ایجاد انتزاع روی MediatR برای CQRS - جداسازی Command و Query
Create Abstraction on MediatR for CQRS - Command and Query Separation
ایجاد انتزاع روی MediatR برای CQRS - جداسازی Command و Query - بخش دوم
Create Abstraction on MediatR for CQRS - Command and Query Separation - Part 2
توسعه Use Caseهای برنامه کاتالوگ با CQRS و MediatR
Catalog Application Use Case Development with CQRS and MediatR
مقدمه: توسعه Use Caseهای برنامه کاتالوگ با CQRS و MediatR
Introduction - Catalog Application Use Case Development with CQRS and MediatR
مرور سریع تحلیل Use Caseهای برنامه ماژول کاتالوگ
Quick Remember Catalog Module Application Use Cases Analysis
توسعه ساختار پوشهبندی ماژول کاتالوگ برای CQRS
Develop Catalog Module Folder Structure for CQRS
توسعه کلاسهای DTO برای محصول در ماژول کاتالوگ
Develop DTO Classes for Product in Catalog Module
توسعه CreateProductCommand و Handler آن در لایه Application کاتالوگ
Develop Products CreateProductCommand and Handler in Catalog Modules Application
توسعه CreateProductCommandHandler با استفاده از CatalogDbContext در کاتالوگ
Develop Products CreateProductCommandHandler using CatalogDbContext in Catalog
توسعه UpdateProductCommand و Handler آن با استفاده از CatalogDbContext
Develop Products UpdateProductCommand and Handler using CatalogDbContext
توسعه DeleteProductCommand و Handler آن با استفاده از CatalogDbContext
Develop Products DeleteProductCommand and Handler using CatalogDbContext
توسعه پرسوجوهای (Queries) محصول با CQRS و MediatR در ماژول کاتالوگ
Develop Product Queries with CQRS and MediatR in Catalog Module
نگاشت با Mapster
Mapping with Mapster
توسعه پرسوجوهای محصول با CQRS، MediatR و Mapster در ماژول کاتالوگ
Develop Product Queries with CQRS and MediatR in Catalog Module with Mapster
توسعه پرسوجوی GetProductByCategory با CQRS و MediatR در ماژول کاتالوگ
Develop GetProductByCategory Queries with CQRS and MediatR in Catalog Module
توسعه پرسوجوی GetProductById با CQRS و MediatR در ماژول کاتالوگ
Develop GetProductById Queries with CQRS and MediatR in Catalog Module
توسعه هندلرهای رویداد دامین با MediatR INotificationHandler در کاتالوگ
Develop Domain Event Handlers with MediatR INotificationHandler in Catalog
توسعه هندلرهای رویداد دامین با MediatR INotificationHandler - بخش دوم
Develop Domain Event Handlers with MediatR INotificationHandler - Part 2
توسعه نقاط اتصال API کاتالوگ و ارائه Minimal API با Carter و REPR
Develop Catalog API Endpoints Expose Minimal API Endpoints with Carter and REPR
مقدمه: توسعه نقاط اتصال API کاتالوگ و ارائه Minimal API
Introduction - Develop Catalog API Endpoints Exposing Minimal API Endpoints
الگوی طراحی REPR و چرخه حیات درخواست CQRS MediatR
REPR Design Pattern and CQRS MediatR Request Lifecycle
معرفی Minimal APIها و نصب کتابخانه Carter برای ارائه Minimal APIها
Minimal APIs and Install Carter Library to Expose Minimal APIs
مرور سریع تحلیل نقاط اتصال (Endpoints) ماژول کاتالوگ
Quick Remember Catalog Module Endpoints Analysis
توسعه نقطه اتصال POST برای CreateProduct با استفاده از Carter و ICarterModule
Develop CreateProduct POST Endpoint with Carter Implements ICarterModule
توسعه نقطه اتصال POST برای CreateProduct با استفاده از Carter - بخش دوم
Develop CreateProduct POST Endpoint with Carter Implements ICarterModule - Part 2
توسعه نقطه اتصال UpdateProduct برای APIهای REST در ماژول کاتالوگ
Developing UpdateProduct Endpoint for REST APIs in Catalog Module
توسعه نقطه اتصال DeleteProduct برای APIهای REST در ماژول کاتالوگ
Developing DeleteProduct Endpoint for REST APIs in Catalog Module
توسعه نقطه اتصال GetProducts برای APIهای REST در ماژول کاتالوگ
Developing GetProducts Endpoint for REST APIs in Catalog Module
توسعه نقطه اتصال GetProductById برای APIهای REST در ماژول کاتالوگ
Developing GetProductById Endpoint for REST APIs in Catalog Module
توسعه نقطه اتصال GetProductByCategory برای APIهای REST در ماژول کاتالوگ
Developing GetProductByCategory Endpoint for REST APIs in Catalog Module
ثبت کتابخانههای Carter در سرویس تزریق وابستگی و درخواست ASP.NET
Register Carter Libraries into ASP.NET Dependency Injection Service and Request
ایجاد متد Extension برای ثبت Assemblyهای Carter
Create Extension Method for Carter Assembly Registrations
ایجاد کالکشن Postman برای EShopModules
Create Postman Collection for EShopModules
تست ماژول کاتالوگ: درخواست POST برای CreateProduct و دیباگ Minimal API
Test Catalog Module - CreateProduct POST Request - Debug Carter Minimal API
تست نقطه اتصال UpdateProduct با CQRS و VSA در ماژول کاتالوگ
Test UpdateProduct Endpoint with CQRS and VSA in Catalog Module
تست نقاط اتصال دریافت محصول با CQRS و VSA در ماژول کاتالوگ
Test Get Product Endpoints with CQRS and VSA in Catalog Module
تست نقطه اتصال DeleteProduct با CQRS و VSA در ماژول کاتالوگ
Test DeleteProduct Endpoint with CQRS and VSA in Catalog Module
توسعه دغدغههای عرضی (Cross cutting Concerns) برای کاتالوگ و سایر ماژولها
Develop Cross-cutting Concerns for Catalog and Each Module in EShop Modules
مقدمه: توسعه دغدغههای عرضی برای کاتالوگ و هر ماژول
Introduction - Develop Cross-cutting Concerns for Catalog and Each Module
رفتارهای خط لوله (Pipeline Behaviors) در MediatR و کتابخانه Fluent Validation
MediatR Pipeline Behaviors and Fluent Validation Library
افزودن دغدغههای عرضی به کتابخانه Shared برای استفاده در تمام ماژولها
Add Cross-cutting Concerns into Shared Class Library to Use in All Modules
اعمال اعتبارسنجی با AbstractValidator با استفاده از Fluent Validation
Apply Validation with AbstractValidator using Fluent Validation Library
اعمال اعتبارسنجی با AbstractValidator با استفاده از Fluent Validation - بخش دوم
Apply Validation with AbstractValidator using Fluent Validation Library - Part 2
رفتار خط لوله اعتبارسنجی (Validation Pipeline Behavior) با MediatR و Fluent Validation
Validation Pipeline Behavior with MediatR using Fluent Validation Library
حذف اعتبارسنج دستی و تست رفتار خط لوله اعتبارسنجی با MediatR
Remove Manual Validator and Test Validation Pipeline Behavior with MediatR
توسعه اعتبارسنجهای دستورات CRUD با Fluent Validation
Develop CRUD Command Validators with Fluent Validation
مدیریت سراسری استثناها (Exceptions) در ASP.NET Core با app.UseExceptionHandler
Global Handling Exceptions in ASP.NET Core with app.UseExceptionHandler
روش عمومی و مشترک مدیریت استثناها در ASP.NET Core با app.UseExceptionHandler
Shared Handle Exceptions Generic Way in ASP.NET Core with app.UseExceptionHandler
مدیریت سراسری استثناها با اینترفیس IExceptionHandler در ASP.NET Core
Global Exception Handling with IExceptionHandler Interface in ASP.NET Core
ثبت مدیریت استثنای سفارشی در ASP.NET با متد AddExceptionHandler
Register Custom Exception Handling into ASP.NET with AddExceptionHandler Method
رفتار لاگگذاری (Logging Behavior) در خط لوله MediatR برای دغدغههای عرضی
Logging Behavior in MediatR Pipeline for Cross-cutting Concerns
تست رفتار لاگگذاری برای تمام درخواستهای MediatR در ماژول کاتالوگ
Test Logging Behavior for All MediatR Requests on Catalog Module
لاگگذاری ساختاریافته با استفاده از Serilog در Minimal APIهای .NET 8.0
Structured Logging Using Serilog in .NET 8.0 Minimal APIs
استفاده از Serilog WriteTo Seq برای لاگگذاری ساختاریافته در .NET
Serilog WriteTo Seq for Structured Logging in .NET
توسعه کلاس Pagination برای پرسوجوی GetProducts با CQRS و MediatR
Develop Pagination Class for Query GetProducts using CQRS and MediatR
توسعه پرسوجوی GetProducts با اعمال Pagination با CQRS و MediatR
Develop GetProducts Query Apply Pagination using CQRS and MediatR
توسعه ماژول سبد خرید با معماری برش عمودی و CQRS
Develop Basket Module with Vertical Slice Architecture and CQRS
مقدمه: توسعه ماژول سبد خرید با معماری برش عمودی و CQRS
Introduction - Develop Basket Module with Vertical Slice Architecture and CQRS
تحلیل دامین ماژول سبد خرید: مدلها، Use Caseها، APIهای REST و دیتابیسها
Domain Analysis of Basket Module: Models, UCs, Rest APIs, Databases
تحلیل فنی ماژول سبد خرید: معماریها، الگوها، کتابخانهها و پوشهها
Technical Analysis of Basket Module: Architectures, Patterns, Libraries, Folders
توسعه مدلهای موجودیت دامین ShoppingCart در موجودیتهای دامین سبد خرید
Develop ShoppingCart Domain Entity Models in Basket Domain Entities
توسعه مدل موجودیت دامین غنی DDD برای موجودیتهای ShoppingCart
Develop DDD Rich-domain Model Entity for ShoppingCart Entities
توسعه زیرساخت دادههای سبد خرید با EF Core Code First و PostgreSQL
Develop Basket Data-Infrastructure with EF Core Code First and PostgreSQL
مقدمه: توسعه زیرساخت دادههای سبد خرید با EF Core Code First
Introduction - Develop Basket Data-Infrastructure with EF Core Code First
مراحل توسعه زیرساخت EF Core برای ماژول سبد خرید
Steps of Infrastructure EF Core Developments for Basket Module
توسعه شیء DbContext در EF Core برای ذخیره موجودیتها در زیرساخت سبد خرید
Develop EF Core DbContext Object for Storing Entities in Basket Infrastructure
نگاشت اشیاء DDD به موجودیتهای EF و توسعه پیکربندیهای موجودیت EF Core
Mapping DDD Objects to EF Entities - Develop EF Core Entity Configurations
روابط EF Core 8 و نگاشت ValueObject در DDD با ComplexType و Property
EF Core 8 Relations and DDD ValueObject Mapping with ComplexType and Property
توسعه پیکربندیهای رابطهی موجودیت SC و SC Items
Develop SC and SC Items Relations Entity Configurations
رشته اتصال SQL Server در فایل appsettings.json
EF Core SQL Server Connection String in appsettings.json file
ثبت DbContext در ابزار تزریق وابستگی ASP.NET برای PostgreSQL
Register EF Core DbContext in ASP.NET Dependency Injection Tool for PostgreSQL
ایجاد میگریشنهای EF Core برای BasketDbContext در زیرساخت سبد خرید
Create EF Core Migrations for BasketDbContext in Basket Infrastructure
اجرای Docker Compose در ویژوال استودیو برای راهاندازی PostgreSQL در داکر
Run Docker-Compose on Visual Studio to Setup PostgreSQL on Docker
اعمال میگریشنهای EF Core بر روی دیتابیس PostgreSQL با دستور Update Database
Apply EF Core Migrations to PostgreSQL DB with Update-Database Command
میگریشن خودکار موجودیتهای EF Core به PostgreSQL هنگام شروع برنامه با کدنویسی
Auto Migrate EF Core Entities to PostgreSQL When Application Startup with Coding
تست میگریشنهای خودکار با متد UseMigration در WebApplication
Test Auto-Migrations with UseMigration Extension Method on WebApplication
توسعه Use Caseهای برنامه سبد خرید با CQRS و MediatR
Develop Basket Application Use Case Development with CQRS and MediatR
مقدمه: توسعه Use Caseهای برنامه سبد خرید با CQRS و MediatR
Introduction - Basket Application Use Case Development with CQRS and MediatR
توسعه ساختار پوشهبندی سبد خرید برای CQRS
Develop Basket Folder Structure for CQRS
توسعه کلاسهای DTO برای ShoppingCart در ماژول سبد خرید
Develop DTO Classes for ShoppingCart in Basket Module
توسعه CreateBasketCommand و Handler آن در Use Caseهای برنامه سبد خرید
Develop Basket CreateBasketCommand and Handler in Basket Application Use Cases
توسعه CreateBasketCommandHandler با استفاده از BasketDbContext در ماژول سبد خرید
Develop Basket CreateBasketCommandHandler using BasketDbContext in Basket Module
توسعه DeleteBasketCommand و Handler آن با استفاده از BasketDbContext
Develop Basket DeleteBasketCommand and Handler using BasketDbContext in Basket
توسعه پرسوجوهای سبد خرید با CQRS و MediatR در ماژول سبد خرید
Develop Basket Queries with CQRS and MediatR in Basket Module
توسعه AddItemIntoBasketHandler با CQRS و MediatR
Develop Basket AddItemIntoBasketHandler with CQRS and MediatR
توسعه RemoveItemFromBasketHandler با CQRS و MediatR
Develop Basket RemoveItemFromBasketHandler with CQRS and MediatR
توسعه نقاط اتصال API سبد خرید و ارائه Minimal API با Carter و REPR
Develop Basket API Endpoints Exposing Minimal API Endpoints with Carter and REPR
مقدمه: توسعه نقاط اتصال API سبد خرید و ارائه Minimal API
Introduction - Develop Basket API Endpoints Exposing Minimal API Endpoints
توسعه نقطه اتصال POST برای CreateBasket با Carter و ICarterModule
Develop CreateBasket POST Endpoint with Carter Implements ICarterModule
توسعه نقطه اتصال DeleteBasket با Carter و ICarterModule
Develop DeleteBasket Endpoint with Carter Implements ICarterModule
توسعه نقطه اتصال GetBasket با Carter و ICarterModule برای Minimal APIها
Develop GetBasket Endpoint with Carter Implements ICarterModule for Minimal APIs
توسعه نقطه اتصال AddItemIntoBasket با Carter و ICarterModule
Develop AddItemIntoBasket Endpoint with Carter Implements ICarterModule
توسعه نقطه اتصال RemoveItemFromBasket با Carter و ICarterModule
Develop RemoveItemFromBasket Endpoint with Carter Implements ICarterModule
ثبت کتابخانههای MediatR و Carter در سرویس تزریق وابستگی ASP.NET
Register MediatR and Carter Libraries into ASP.NET Dependency Injection Service
ثبت کتابخانههای MediatR در سرویس تزریق وابستگی و درخواست ASP.NET
Register MediatR Libraries into ASP.NET Dependency Injection Service and Request
توسعه متد Extension برای ثبت سفارشی MediatR با Assemblyها
Develop MediatR Extension Method for Custom Registration With Assemblies
تست API سبد خرید: درخواست POST برای CreateBasket و دیباگ Minimal API
Test Basket API - CreateBasket POST Request - Debug Carter Minimal API
تست نقاط اتصال دریافت سبد خرید با CQRS و VSA در ماژول سبد خرید
Test Get Basket Endpoints with CQRS and VSA in Basket Module
تست نقطه اتصال DeleteBasket با CQRS و VSA در ماژول سبد خرید
Test DeleteBasket Endpoint with CQRS and VSA in Basket Module
تست نقطه اتصال AddItemIntoBasket با CQRS و VSA در ماژول سبد خرید
Test AddItemIntoBasket Endpoint with CQRS and VSA in Basket Module
تست نقطه اتصال RemoveItemFromBasket با CQRS و VSA در ماژول سبد خرید
Test RemoveItemFromBasket Endpoint with CQRS and VSA in Basket Module
توسعه کشینگ توزیعشده با Redis در ماژول سبد خرید
Develop Distributed Caching with Redis in Basket Module
مقدمه: توسعه کشینگ توزیعشده با Redis در ماژول سبد خرید
Introduction - Develop Distributed Caching with Redis in Basket Module
توسعه کلاس BasketRepository با استفاده از شیء DbContext در EF Core
Develop BasketRepository Class using EF Core DbContext Object
پیادهسازی کلاس IBasketRepository با استفاده از DbContext در EF Core
Implement IBasketRepository Class using EF Core DbContext Object
ثبت IBasketRepository در DI ماژول سبد خرید
Register IBasketRepository into DI of Basket Module
تزریق و استفاده از IBasketRepository در کلاسهای Handler در ماژول سبد خرید
Inject and Use IBasketRepository into Handler Classes in Basket Module
تزریق و استفاده از IBasketRepository در هندلرهای AddItem و RemoveItem
Inject and Use IBasketRepository into AddItem and RemoveItem Handler Classes
تست سریع نقطه اتصال سبد خرید با CQRS و VSA در ماژول سبد خرید
Quick Test Basket Endpoint with CQRS and VSA in Basket Module
الگوی Cache aside و ابطال کش (Cache Invalidation)
Cache-aside Pattern and Cache Invalidation
الگوی Proxy، الگوی Decorator و کتابخانه Scrutor
Proxy Pattern, Decorator Pattern, and Scrutor Library
توسعه CachedBasketRepository با الگوی Proxy، Decorator و Scrutor
Develop CachedBasketRepository with Proxy Pattern, Decorator Pattern, and Scrutor
توسعه CachedBasketRepository با الگوی Proxy و Decorator - بخش دوم
Develop CachedBasketRepository with Proxy Pattern, Decorator Pattern - Part 2
توسعه CachedBasketRepository با الگوی Proxy و Decorator - بخش سوم
Develop CachedBasketRepository with Proxy Pattern, Decorator Pattern - Part 3
ثبت CachedBasketRepository دکور شده و StackExchangeRedis با Scrutor
Register Decorated CachedBasketRepository and StackExchangeRedis with Scrutor
ثبت StackExchangeRedis در DI مشترک در Program.cs پروژه API
Register StackExchangeRedis into Common DI in API Project Program.cs
راهاندازی Redis به عنوان کش توزیعشده با استفاده از فایل Docker Compose
Setup Redis as a Distributed Cache using Docker-compose File for Multi-container
اجرای Docker Compose در ویژوال استودیو برای راهاندازی Redis در داکر
Run Docker-Compose on Visual Studio to Setup Redis Distributed Cache on Docker
اتصال به کش Redis از ماژول محلی سبد خرید و ارسال درخواست GET برای کش
Connect Redis Cache from Local Basket Module and Send GET Request Basket Cache
توسعه JsonConverter سفارشی برای ShoppingCart و آیتمها هنگام خواندن از Redis
Develop Custom JsonConverter for ShoppingCart and Items When Reading to Redis
توسعه JsonConverter سفارشی برای ShoppingCart و آیتمها - بخش دوم
Develop Custom JsonConverter for ShoppingCart and Items - Part 2
استفاده از JsonSerializerOptions سفارشی با JsonConverter برای ShoppingCart و آیتمها
Use Custom JsonSerializerOptions with JsonConverter for ShoppingCart and Items
تست سریع نقطه اتصال سبد خرید با CachedBasket Repository و JsonConverter سفارشی
Quick Test Basket Endpoint with CachedBasket Repository and Custom JsonConverter
ارتباطات همگام بین ماژولها با فراخوانی متدهای درون-پروسه (Public APIs)
Sync Communications Between Modules with In-Process Method Calls (Public APIs)
مقدمه: ارتباطات همگام بین ماژولها با فراخوانی متدهای درون-پروسه
Introduction - Sync Communications Between Modules with In-Process Method Calls
نحوه مدیریت ارتباطات بین ماژولها در معماری مونو لیت ماژولار
How Modular Monolithic Architecture Handles Communications Between Modules
Use Caseهای همگام ماژول سبد خرید: ارتباط افزودن آیتم به سبد خرید
Basket Module Synchronous Use Cases - Adding an Item to the Basket Communication
بررسی کلاس AddItemIntoBasketHandler: دریافت قیمت محصول از ماژول کاتالوگ
Examine AddItemIntoBasketHandler Class: Get Product Price from Catalog Module
ارتباط همگام بین ماژولها با استفاده از کتابخانههای کلاس Contracts
Sync Communication Between Modules Using Contracts Class Libraries
مرحله ۱: ایجاد کتابخانه کلاس Catalog.Contracts
Step 1: Create Catalog.Contracts Class Library
مرحله ۲: انتقال متدهای Query یا Command مربوط به MediatR به Catalog.Contracts
Step 2: Move Exposing MediatR Method Query or Commands into Catalog.Contracts
جداسازی عملیات مشترک مربوط به قراردادهای CQRS در کتابخانه Shared.Contracts
Splitting CQRS Contract-Related Common Operations into Shared.Contracts Class Library
مرحله ۳: اصلاح ماژول کاتالوگ برای دریافت رفرنس از کتابخانه Catalog.Contracts
Step 3: Modify Catalog Module Getting Reference from Catalog.Contracts Class Library
مرحله ۴: دریافت رفرنس از کتابخانه Catalog.Contracts توسط ماژول سبد خرید
Step 4: Basket Get Reference from Catalog.Contracts Class Library
مرحله ۶: دریافت مقادیر موجودیت محصول در AddItemIntoBasketHandler و تنظیم قیمت
Step 6: Get Product Entity Values into AddItemIntoBasketHandler and Set Price
تست فراخوانی همگام AddItemIntoBasket سبد خرید به ماژول کاتالوگ برای دریافت دادهها
Test Basket AddItemIntoBasket Sync Call to Catalog Module to Get Product Data
مرحله ۷: مهاجرت به میکروسرویسها: تکامل ارتباطات همگام قراردادها
Step 7: Migrating Microservices: Evolving Contracts Sync Communication
ارتباطات ناهمگام بین ماژولها با RabbitMQ و MassTransit برای بهروزرسانی قیمت
Async Communications Between Modules with RabbitMQ & MassTransit for UpdatePrice
مقدمه: ارتباطات ناهمگام بین ماژولها با RabbitMQ و MassTransit
Introduction - Async Communications Between Modules with RabbitMQ & MassTransit
نحوه مدیریت ارتباطات ناهمگام بین ماژولها در معماری مونو لیت ماژولار
How Modular Monolithic Architecture Handles Async Communications Between Modules
الگوی پیامرسانی Fan Out Publish/Subscribe
Fan-Out Publish/Subscribe Messaging Pattern
یادآوری سریع: رویدادهای دامین در مقابل رویدادهای یکپارچهساز - دامین منجر به رویداد یکپارچهساز میشود
Quick Remember: Domain vs Integration Events - Domain Leads to Integration Event
تحلیل دامین ارتباط ناهمگام بین ماژولهای کاتالوگ و سبد خرید
Domain Analysis of Async Communication Between Catalog and Basket Modules
تحلیل فنی ارتباط ناهمگام بین ماژولهای کاتالوگ و سبد خرید
Technical Analysis of Async Communication Between Catalog and Basket Modules
مراحل توسعه ارتباط ناهمگام بین ماژولهای کاتالوگ و سبد خرید
Steps of Developing Async Communication Between Catalog and Basket Modules
مرحله ۱: بررسی رویدادهای دامین و یکپارچهساز ماژول کاتالوگ
Step 1: Examine Catalog Module Domain and Integration Events
مرحله ۲: ایجاد کتابخانه کلاس Shared.Messaging
Step 2: Create Shared.Messaging Class Library
توسعه رویداد ProductPriceChangedIntegration در کتابخانه Shared.Messaging
Develop ProductPriceChangedIntegration Event in Shared.Messaging Class Library
توسعه متدهای Extension در MassTransit برای ثبت اتصال RabbitMQ در DI
Develop MassTransit Extension Methods to Register RabbitMQ Connection into DI
توسعه متدهای Extension در MassTransit برای ثبت اتصال در DI کاتالوگ
Develop MassTransit Extension Methods to Register Connection into DI of Catalog
افزودن رفرنس پروژه Shared.Messaging به ماژولهای کاتالوگ و سبد خرید
Add Project Reference to Shared.Messaging in Catalog and Basket Modules
ثبت پکیجهای MassTransit در DI پروژه Bootstrapper API در فایل Program.cs
Register MassTransit Packages into Bootstrapper API DI in Program.cs File
رویداد ProductPriceChanged: چگونه رویداد دامین منجر به رویداد یکپارچهساز میشود
ProductPriceChanged Integration Event: How Domain Leads to Integration Event
مرحله ۳: انتشار رویداد یکپارچهساز UpdatePrice توسط کاتالوگ
Step 3: Catalog Publish UpdatePrice Integration Event
مرحله ۴: اشتراک و مصرف رویداد ProductPriceChanged توسط سبد خرید
Step 4: Basket Subscribe and Consume ProductPriceChanged Integration Event
توسعه قابلیت UpdateItemPriceInBasket در ماژول سبد خرید
Develop UpdateItemPriceInBasket Feature in Basket Module
توسعه قابلیت UpdateItemPriceInBasket در ماژول سبد خرید - بخش دوم
Develop UpdateItemPriceInBasket Feature in Basket Module - Part 2
فراخوانی UpdateItemPriceInBasketCommand در ProductPriceChangedIntegrationEventHandler
Call UpdateItemPriceInBasketCommand in ProductPriceChangedIntegrationEventHandler
تست ProductPriceChangedIntegrationEvent با MassTransit در حافظه (In Memory)
TEST - ProductPriceChangedIntegrationEvent with In-Memory MassTransit
RabbitMQ چیست و اجزای اصلی آن کدامند (Producer, Queue, Consumer)؟
What is RabbitMQ and Main Components of RabbitMQ (Producer, Queue, Consumer)
تغییر باس In Memory به بروکر پیام RabbitMQ در MassTransit
Shifting In-Memory Bus to RabbitMQ Message Broker in MassTransit
توسعه متدهای Extension در MassTransit برای ثبت اتصال RabbitMQ در DI
Develop MassTransit Extension Methods to Register RabbitMQ Connection into DI
راهاندازی RabbitMQ برای ارتباط ناهمگام با استفاده از فایل Docker Compose
Setup RabbitMQ for Async Communication Using Docker-Compose File
اجرای Docker Compose در ویژوال استودیو برای راهاندازی RabbitMQ در داکر
Run Docker-Compose on Visual Studio to Setup RabbitMQ on Docker
تست ProductPriceChangedIntegrationEvent با RabbitMQ MassTransit
TEST - ProductPriceChangedIntegrationEvent with RabbitMQ MassTransit
توسعه ماژول هویت کاربر با احرازهویت Keycloak
Develop User Identity Module with Keycloak Authentication
مقدمه: توسعه ماژول هویت کاربر با احرازهویت Keycloak
Introduction - Develop User Identity Module with Keycloak Authentication
مدیریت هویت و دسترسی Keycloak
Keycloak Identity and Access Management
مزایای اصلی استفاده از Keycloak
Main Advantages of Using Keycloak
بهترین روشها هنگام استفاده از Keycloak
Best Practices When Using Keycloak
جریانهای OAuth2 و OpenID Connect با Keycloak
OAuth2 + OpenID Connect Flows with Keycloak
Keycloak به عنوان یک سرویس پشتیبان برای ماژولهای مونو لیت ماژولار
Keycloak as a Backing Service of Modular Monolith Modules
راهاندازی Keycloak در فایل Docker Compose برای تامینکننده هویت (Identity Provider)
Setup Keycloak into Docker-Compose File for Identity Provider
اجرای Docker Compose در ویژوال استودیو برای راهاندازی Keycloak در داکر
Run Docker-Compose on Visual Studio Setup Keycloak Identity Provider on Docker
راهاندازی دیتابیس هویت Keycloak به عنوان یک Schema در دیتابیس PostgreSQL
Setup Keycloak User Identity Database as a PostgreSQL DB Identity Schema
اجرای Docker Compose برای تولید Schema هویت PostgreSQL برای Keycloak
Run Docker-Compose for Keycloak PostgreSQL Identity Schema Generation
ایجاد Realm، کاربر و Client برای OpenID Connect با تامینکننده هویت Keycloak
Create Realm, User and Client for OpenID Connect with Keycloak Identity Provider
ایمنسازی ماژولهای EShop با Keycloak OpenID Connect در ASP.NET
Secure EShop Modules with Keycloak OpenID Connect in ASP.NET
ایمنسازی و تست نقاط اتصال سبد خرید با یکپارچهسازی Keycloak
Secure and Test Basket Endpoints with Keycloak Integration
دریافت توکن JwtBearer برای OpenID Connect با هویت Keycloak
Get JwtBearer Token for OpenID Connect with Keycloak Identity
دریافت کاربر فعلی از توکن با ClaimsPrincipal در احرازهویت ASP.NET
Get Current User from Token with ClaimsPrincipal in ASP.NET Authentication
تست ایجاد سبد خرید با کاربر فعلی از توکن با ClaimsPrincipal
TEST - Create Basket with Current User from Token with ClaimsPrincipal
ایمنسازی نقاط اتصال سبد خرید با OpenID Connect با استفاده از Keycloak
Secure Basket Endpoints with OpenID Connect Using Keycloak Identity Provider
ماژول سفارشات با معماری برش عمودی و CQRS
Ordering Module with Vertical Slice Architecture and CQRS
مقدمه: ماژول سفارشات با معماری برش عمودی و CQRS
Introduction - Ordering Module with Vertical Slice Architecture and CQRS
تحلیل دامین ماژول سفارشات: مدلها، Use Caseها، APIهای REST و دیتابیسها
Domain Analysis of Ordering Module: Models, UCs, Rest APIs, Databases
تحلیل فنی ماژول سفارشات: معماریها، الگوها و کتابخانهها
Technical Analysis of Ordering Module: Architectures, Patterns, Libraries
توسعه موجودیتهای دامین سفارشات با الگوهای تاکتیکی DDD
Develop Ordering Domain Entities with Tactical Domain-Driven Design Patterns
توسعه زیرساخت دادههای سفارشات با EF Core Code First و PostgreSQL
Develop Ordering Data-Infrastructure with EF Core Code First and PostgreSQL
توسعه لایه Ordering.Application با CQRS و MediatR
Develop Ordering.Application Layer with CQRS and MediatR
توسعه نقاط اتصال API سفارشات و ارائه Minimal API با Carter
Develop Ordering API Endpoints Exposing Minimal API Endpoints with Carter
الگوی Outbox برای پیامرسانی مطمئن میکروسرویسها در Use Case تسویه سبد خرید
Outbox Pattern for Reliable Microservices Messaging with BasketCheckout Use Case
مقدمه: الگوی Outbox برای پیامرسانی مطمئن میکروسرویسها
Introduction - Outbox Pattern for Reliable Microservices Messaging
تحلیل رویداد تسویه سبد خرید (Basket Checkout) بین ماژولهای سبد خرید و سفارشات
Analyze Basket Checkout Event Between Basket and Ordering Modules
توسعه رویداد BasketCheckout در کتابخانه کلاس Shared.Messaging
Develop BasketCheckout Event in Shared.Messaging Class Library
یادآوری سریع تنظیمات ارتباط ناهمگام MassTransit RabbitMQ
Quick Remember Async Communication MassTransit RabbitMQ Setup
توسعه پوشه قابلیت BasketCheckout برای ارائه نقطه اتصال POST و انتشار رویداد
Develop BasketCheckout Feature Folder to Expose POST Endpoint and Publish Event
توسعه متد Handler تسویه سبد خرید برای انتشار رویداد در RabbitMQ از طریق MassTransit
Develop Basket Checkout Handler Method to Publish Event to RabbitMQ via MassTransit
مشکل Dual write و الگوی Outbox
Dual-write Problem and Outbox Pattern
توسعه الگوی Outbox برای پیامرسانی مطمئن میکروسرویسها در BasketCheckout
Develop Outbox Pattern for Reliable Microservices Messaging with BasketCheckout
مراحل ۱ و ۲: ایجاد موجودیت Outbox و اصلاح DbContext
Step 1-2: Create the Outbox Entity and Modify the DbContext
مرحله ۳: بهروزرسانی CheckoutBasketHandler با Outbox و مدیریت Transaction (Begin/Commit)
Step 3: Update CheckoutBasketHandler with Outbox and Database Begin and Commit
مرحله ۴: ایجاد یک Background Service برای پردازش پیامهای Outbox
Step 4: Create a Background Service to Process Outbox Messages
اشتراک و مصرف رویداد BasketCheckout از RabbitMQ توسط ماژول سفارشات
Ordering Module to Subscribe-Consume BasketCheckout Event from RabbitMQ
ثبت ماژول سفارشات در MassTransit برای ارتباطات رویداد-محور ناهمگام
Register Ordering Module into MassTransit for Async Event-driven Communication
توسعه Integration Event Handler برای مصرف رویداد تسویه سبد خرید
Develop Basket Checkout Event Consumer Integration Event Handler
تست Use Case تسویه سبد خرید: ارتباط ناهمگام مطمئن با الگوی Outbox - بخش اول
TEST - Checkout Basket Use Case - Reliable Async Communication Outbox Pattern - Part 1
تست Use Case تسویه سبد خرید: ارتباط ناهمگام مطمئن با الگوی Outbox - بخش دوم
TEST - Checkout Basket Use Case - Reliable Async Communication Outbox Pattern - Part 2
کانتینریزه کردن و ارکستراسیون برنامه ماژولار EShop در Docker Compose
Containerize and Orchestrate EShop Modular App in Docker-Compose
مقدمه: کانتینریزه کردن و ارکستراسیون برنامه ماژولار EShop در Docker Compose
Introduction - Containerize and Orchestrate EShop Modular App in Docker-Compose
افزودن پروژه ASP.NET API به فایل Docker Compose برای محیط چند-کانتینری
Add ASP.NET API Project into Docker-Compose File for Multi-container Docker Environment
تنظیم متغیرهای محیطی پیکربندی پروژه API بر اساس appsettings
Set Environment Variables of API Project Configurations According to appsettings
تست کلی: اجرای Docker Compose با پروژه API و سرویسهای پشتیبان
TEST ALL - Docker-Compose All with API Project and Backing Services
تست ماژول سبد خرید: اجرای Docker Compose با پروژه API
TEST Basket Module - Docker-Compose All with API Project
تست CheckoutBasket با RabbitMQ و ماژول سفارشات در Docker Compose
TEST CheckoutBasket with RabbitMQ and Ordering Module - Docker-Compose All with API
تست ماژول سفارشات: اجرای Docker Compose با پروژه API
TEST Ordering Module - Docker-Compose All with API Project
برنامههای کلاینت: مصرف API ماژولها در EShop Modules
Client Apps - Consume API Module in EShop Modules
مهاجرت به میکروسرویسها: تبدیل ماژولهای EShop به میکروسرویس با الگوی Strangler Fig
Migrating to Microservices: EShop Modules to Microservices with Strangler Fig
مهاجرت به میکروسرویسها: چالشها و ملاحظات
Migrating to Microservices: Challenges and Considerations
الگوی Strangler Fig برای بازسازی مونو لیت به میکروسرویسها
Strangler Fig Pattern for Refactoring Monolith into Microservices
مراحل بازسازی مونو لیت به میکروسرویسها
Steps of Refactoring Monolith into Microservices
مرحله ۱: تجزیه ماژولهای EShop به میکروسرویسها با Bounded Contextهای DDD
Step 1: Decompose EShop Modules to Microservices with DDD Bounded Contexts
مرحله ۲: اولویتبندی سرویسهای ماژولها برای مهاجرت
Step 2: Prioritize Modules-Services for Migration
مرحله ۳: استخراج یک سرویس از مونو لیت
Step 3: Extract a Service from a Monolith
نمایش نظرات